|
Iterative deepening A * (IDA *) is a graph traversal and path search algorithm that can find the shortest path between a designated start node and any member of a set of goal nodes in a weighted graph. It is a variant of iterative deepening depth-first search that borrows the idea to use a heuristic function to evaluate the remaining cost to get to the goal from the A * search algorithm. Since it is a depth-first search algorithm, its memory usage is lower than in A *, but unlike ordinary iterative deepening search, it concentrates on exploring the most promising nodes and thus doesn't go to the same depth everywhere in the search tree. Unlike A *, IDA * doesn't utilize dynamic programming and therefore often ends up exploring the same nodes many times. While the standard iterative deepening depth-first search uses search depth as the cutoff for each iteration, the IDA * uses the more informative where is the cost to travel from the root to node and is a problem-specific heuristic estimate of the cost to travel from to the solution. As in A *, the heuristic has to have particular properties to guarantee optimality (shortest paths); see Properties, below. Applications of IDA * are found in such problems as planning. The algorithm was first described by Richard Korf in 1985. == Pseudocode == node ''current node'' g ''the cost to reach current node'' f ''estimated cost of the cheapest path (root..node..goal)'' h(node) ''estimated cost of the cheapest path (node..goal)'' cost(node, succ) ''path cost function'' is_goal(node) ''goal test'' successors(node) ''node expanding function'' procedure ida_star(root) bound := h(root) loop t := search(root, 0, bound) if t = FOUND then return FOUND if t = ∞ then return NOT_FOUND bound := t end loop end procedure function search(node, g, bound) f := g + h(node) if f > bound then return f if is_goal(node) then return FOUND min := ∞ for succ in successors(node) do t := search(succ, g + cost(node, succ), bound) if t = FOUND then return FOUND if t < min then min := t end for return min end function 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Iterative deepening A*」の詳細全文を読む スポンサード リンク
|